/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entities;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author edgar
 */
@Entity
@Table(name = "movimientos_caja_cabecera")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "MovimientosCajaCabecera.findAll", query = "SELECT m FROM MovimientosCajaCabecera m"),
    @NamedQuery(name = "MovimientosCajaCabecera.findByNroMovimiento", query = "SELECT m FROM MovimientosCajaCabecera m WHERE m.nroMovimiento = :nroMovimiento"),
    @NamedQuery(name = "MovimientosCajaCabecera.findByFechaHoraApertura", query = "SELECT m FROM MovimientosCajaCabecera m WHERE m.fechaHoraApertura = :fechaHoraApertura"),
    @NamedQuery(name = "MovimientosCajaCabecera.findByFechaHoraCierre", query = "SELECT m FROM MovimientosCajaCabecera m WHERE m.fechaHoraCierre = :fechaHoraCierre"),
    @NamedQuery(name = "MovimientosCajaCabecera.findBySaldoInicial", query = "SELECT m FROM MovimientosCajaCabecera m WHERE m.saldoInicial = :saldoInicial"),
    @NamedQuery(name = "MovimientosCajaCabecera.findBySaldoFinal", query = "SELECT m FROM MovimientosCajaCabecera m WHERE m.saldoFinal = :saldoFinal")})
public class MovimientosCajaCabecera implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @SequenceGenerator(name="movimientos_caja_cabecera_nro_movimiento_seq", sequenceName="movimientos_caja_cabecera_nro_movimiento_seq", allocationSize=1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "movimientos_caja_cabecera_nro_movimiento_seq")
    @Basic(optional = false)
    @Column(name = "nro_movimiento")
    private Integer nroMovimiento;
    @Column(name = "fecha_hora_apertura")
    @Temporal(TemporalType.DATE)
    private Date fechaHoraApertura;
    @Column(name = "fecha_hora_cierre")
    @Temporal(TemporalType.DATE)
    private Date fechaHoraCierre;
    @Column(name = "saldo_inicial")
    private Integer saldoInicial;
    @Column(name = "saldo_final")
    private Integer saldoFinal;
    @JoinColumn(name = "cod_usuario", referencedColumnName = "cod_usuario")
    @ManyToOne
    private Usuarios codUsuario;
    @JoinColumn(name = "nro_caja", referencedColumnName = "nro_caja")
    @ManyToOne(optional = false)
    private Cajas nroCaja;

    public MovimientosCajaCabecera() {
    }

    public MovimientosCajaCabecera(Integer nroMovimiento) {
        this.nroMovimiento = nroMovimiento;
    }

    public Integer getNroMovimiento() {
        return nroMovimiento;
    }

    public void setNroMovimiento(Integer nroMovimiento) {
        this.nroMovimiento = nroMovimiento;
    }

    public Date getFechaHoraApertura() {
        return fechaHoraApertura;
    }

    public void setFechaHoraApertura(Date fechaHoraApertura) {
        this.fechaHoraApertura = fechaHoraApertura;
    }

    public Date getFechaHoraCierre() {
        return fechaHoraCierre;
    }

    public void setFechaHoraCierre(Date fechaHoraCierre) {
        this.fechaHoraCierre = fechaHoraCierre;
    }

    public Integer getSaldoInicial() {
        return saldoInicial;
    }

    public void setSaldoInicial(Integer saldoInicial) {
        this.saldoInicial = saldoInicial;
    }

    public Integer getSaldoFinal() {
        return saldoFinal;
    }

    public void setSaldoFinal(Integer saldoFinal) {
        this.saldoFinal = saldoFinal;
    }

    public Usuarios getCodUsuario() {
        return codUsuario;
    }

    public void setCodUsuario(Usuarios codUsuario) {
        this.codUsuario = codUsuario;
    }

    public Cajas getNroCaja() {
        return nroCaja;
    }

    public void setNroCaja(Cajas nroCaja) {
        this.nroCaja = nroCaja;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (nroMovimiento != null ? nroMovimiento.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof MovimientosCajaCabecera)) {
            return false;
        }
        MovimientosCajaCabecera other = (MovimientosCajaCabecera) object;
        if ((this.nroMovimiento == null && other.nroMovimiento != null) || (this.nroMovimiento != null && !this.nroMovimiento.equals(other.nroMovimiento))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entities.MovimientosCajaCabecera[ nroMovimiento=" + nroMovimiento + " ]";
    }
    
}
